package com.xxwy.lintcodes;

import com.xxwy.BinarySearch;

/**
 * @author xxwy
 * 74. 第一个错误的代码版本 first bad
 * 二分查找
 * 代码库的版本号是从 1 到 n 的整数。某一天，有人提交了错误版本的代码，因此造成自身及之后版本的代码在单元测试中均出错。请找出第一个错误的版本号。
 * <p>
 * 你可以通过 isBadVersion 的接口来判断版本号 version 是否在单元测试中出错，具体接口详情和调用方法请见代码的注释部分。
 */
@BinarySearch
public class Num74 {

    private boolean isBadVersion(int n) {
        if (n <= 3) {
            return false;
        }
        return true;
    }

    public int findFirstBadVersion(int n) {
        // write your code here
        int start = 1;
        int end = n;
        while (start+1 <end){
            int mid = start + (end-start)/2;
            if(isBadVersion(mid)){
                end = mid;
            }else {
                start = mid;
            }
        }
        return isBadVersion(start)? start:end;
    }
}
